package config

import (
	"github.com/zeromicro/go-zero/rest"
)

type Config struct {
	rest.RestConf
	Nacos            *NacosConfig
	UserRpc          *UserRpc
	DistributedIdRpc *DistributedIdRpc
	XxlConf          *XxlJobConfig
	Redis            *RedisConfig
}

type RedisConfig struct {
	Host         string `json:"host" yaml:"host"`
	Port         int    `json:"port" yaml:"port"`
	Password     string `json:"password" yaml:"password"`
	DB           int    `json:"db" yaml:"db"`
	MinIdleConns int    `json:"minIdleConns"`
	ReadTimeout  int    `json:"readTimeout"`
	WriteTimeout int    `json:"writeTimeout"`
	PoolSize     int    `json:"poolSize"`
	IdleTimeout  int    `json:"idleTimeout"`
	MaxRetries   int    `json:"maxRetries"`
}

type XxlJobConfig struct {
	ServerAddr  string `json:"serverAddr"`
	AccessToken string `json:"accessToken"`
	RegistryKey string `json:"registryKey"`
}

type UserRpc struct {
	Target string `json:"target"`
}
type DistributedIdRpc struct {
	Target string `json:"target"`
}

type NacosConfig struct {
	Addr                 string `json:"addr"`
	DataId               string `json:"dataId"`
	ContextPath          string `json:"contextPath"`
	Port                 uint64 `json:"port" `
	Scheme               string `json:"scheme" `
	Username             string `json:"username" `
	Password             string `json:"password" `
	NamespaceId          string `json:"namespaceId" `
	Group                string `json:"group"`
	TimeoutMs            uint64 `json:"timeoutMs" `
	AppName              string `json:"appName" `
	CacheDir             string `json:"cacheDir" `
	LogDir               string `json:"logDir" `
	LogLevel             string `json:"logLevel" `
	UpdateThreadNum      int    `json:"updateThreadNum" `
	NotLoadCacheAtStart  bool   `json:"notLoadCacheAtStart" `
	UpdateCacheWhenEmpty bool   `json:"updateCacheWhenEmpty"`
}
